Levels.fyi Jobs Scraper
Pricing
from $1.00 / 1,000 results
Levels.fyi Jobs Scraper
[π° $1 / 1K] Extract tech jobs from Levels.fyi with base and total compensation ranges, company metadata, locations, work arrangement, and apply links. Search by keyword and location, filter by work arrangement and job family, or paste Levels.fyi URLs for structured, export-ready data.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Pull tech job listings from Levels.fyi at scale β each role arrives with base and total compensation ranges, a per-seniority-level total-comp breakdown, company intelligence (type, employee count, estimated valuation), work arrangement, locations, and a ready-to-apply link. Built for technical recruiters, compensation analysts, and job seekers who need real salary data on 33,000+ tech roles without copying numbers off the website one listing at a time.
Why This Scraper?
- Base AND total compensation on every row β
minBaseSalary/maxBaseSalaryandminTotalSalary/maxTotalSalarywith currency, plus a per-seniority-leveltotalCompensationEstimatesbreakdown. Most job scrapers return zero salary data; this one returns four ranges and a level-by-level comp table. - Company intelligence on every listing β company type, employee count, estimated valuation, a one-line description, and logo URL attached to each job, so you can segment by startup vs. public or by headcount without a second data source.
- 3 work-arrangement filters β Remote, Hybrid, or Office, applied server-side so you only pull the roles you want.
- 8 engineering & product disciplines β Software Engineer, Engineering Manager, Data Scientist, Data Science Manager, Product Manager, Designer, Security, and Hardware Engineer job-family filters.
- 7 seniority levels β Internship, Entry Level, Senior, Principal, Manager, Director, and Executive, so you can isolate exactly the band you're benchmarking.
- Minimum-total-compensation floor β set a dollar threshold to surface only high-paying senior and staff roles and skip everything below it.
- 3 sort modes β Relevance, Total Compensation (highest first), or Date Posted (newest first).
- Multi-keyword batch search β queue up to 50 job titles in one run; each keyword paginates independently and listings that overlap across keywords are deduplicated by job ID, so every job appears once.
- Apply links and dates on every listing β external
applicationUrl, canonical Levels.fyiurl, pluspostingDateandexpiryDatefor freshness filtering.
Use Cases
Recruiting & Talent Sourcing
- Build target-company shortlists by headcount, valuation, or company type
- Find roles by discipline and seniority to match open reqs
- Track which companies are actively hiring for a given title
- Pull apply-ready links to route candidates straight to live postings
Compensation Benchmarking
- Benchmark base vs. total pay ranges across companies for the same role
- Compare per-level total-comp estimates from Internship through Executive
- Set a minimum-total-comp floor to study only senior and staff bands
- Build market pay bands by city and work arrangement
Job Seeking & Career Moves
- Surface the highest-paying roles first with Total Compensation sort
- Filter to Remote-only positions across every discipline
- Compare offers against real ranges before negotiating
- Track newly posted roles with Date Posted sort and posting dates
Market & Talent Research
- Map hiring demand by discipline, level, and location
- Spot which startups vs. public companies are scaling headcount
- Monitor remote vs. hybrid vs. office trends across the market
- Feed structured comp and company data into analytics dashboards
Getting Started
Simple keyword search
The fastest way to start β one keyword:
{"searchQueries": ["Software Engineer"],"maxResults": 100}
Remote senior roles, highest pay first
{"searchQueries": ["Data Scientist", "Machine Learning Engineer"],"location": "Remote","level": "principal","sortBy": "total_compensation","maxResults": 200}
High-paying engineering roles with full filters
{"searchQueries": ["Software Engineer", "Engineering Manager"],"location": "San Francisco","workArrangement": "hybrid","jobFamily": "software-engineer","level": "mid_staff","sortBy": "total_compensation","minTotalCompensation": 300000,"maxResults": 500,"includeDescription": true}
Input Reference
Search
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | array | ["Software Engineer"] | Job titles or keywords to search for. Each keyword runs its own search. Up to 50. Leave empty for the broadest result set for your location and filters. |
location | string | "" | City, region, or work arrangement to search in, e.g. "San Francisco", "London", "Remote". Combined with each keyword. Empty searches everywhere. |
startUrls | array | [] | Paste full Levels.fyi job-search or individual job URLs to scrape them directly. Up to 50 per run. |
Filters & Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
workArrangement | string | Any | Where the role is performed: Any, Remote, Hybrid, or Office. |
jobFamily | string | Any | Limit to one discipline: Any, Software Engineer, Engineering Manager, Data Scientist, Data Science Manager, Product Manager, Designer, Security, or Hardware Engineer. |
level | string | Any | Seniority band: Any, Internship, Entry Level, Senior, Principal, Manager, Director, or Executive. |
sortBy | string | Relevance | Result order: Relevance, Total Compensation (highest first), or Date Posted (newest first). |
minTotalCompensation | integer | null | Only include jobs whose median total compensation is at least this many US dollars. Empty means no minimum. |
maxResults | integer | 100 | Max listings to collect per keyword (or per start URL). Set to 0 for all available. The final page is always kept whole, so a small cap can return slightly more; duplicates across pages and across keywords are removed, so the count can also run slightly under. |
Output
| Parameter | Type | Default | Description |
|---|---|---|---|
includeDescription | boolean | true | Include the full job description (text and HTML) for each listing. Turn off for lighter records with only titles, companies, locations, and compensation. |
Output
Each job is a single flat record. Example:
{"jobId": "123456","title": "Senior Software Engineer, Backend","company": "Stripe","companySlug": "stripe","companyType": "Private","companyEmployeeCount": "5000-10000","companyEstimatedValuation": "$65B","companyShortDescription": "Financial infrastructure for the internet.","companyIcon": "https://logos.levels.fyi/stripe.png","isPromoted": false,"locations": ["San Francisco, CA", "New York, NY"],"workArrangement": "hybrid","jobFamily": "software-engineer","employmentTypes": ["Full-time"],"minBaseSalary": 180000,"maxBaseSalary": 240000,"minTotalSalary": 320000,"maxTotalSalary": 480000,"salaryCurrency": "USD","totalCompensationEstimates": [{ "level": "L4", "totalCompensation": 350000 },{ "level": "L5", "totalCompensation": 450000 }],"postingDate": "2026-05-28","expiryDate": "2026-07-28","applicationUrl": "https://stripe.com/jobs/listing/senior-software-engineer/123456","descriptionText": "We are looking for a backend engineer to...","descriptionHtml": "<p>We are looking for a backend engineer to...</p>","url": "https://www.levels.fyi/jobs?jobId=123456","searchQuery": "Software Engineer","searchLocation": "San Francisco","scrapedAt": "2026-06-10T14:32:00Z"}
Core Fields
| Field | Type | Description |
|---|---|---|
jobId | string | Unique Levels.fyi job ID |
title | string | Job title |
locations | array | Listed locations for the role |
workArrangement | string | remote, hybrid, or office |
jobFamily | string | Discipline slug (e.g. software-engineer); populated when full descriptions are enabled |
employmentTypes | array | Full-time, Intern, Contract, etc. |
isPromoted | boolean | Whether the listing is sponsored |
url | string | Canonical Levels.fyi job URL |
Compensation
| Field | Type | Description |
|---|---|---|
minBaseSalary | number | Minimum base salary |
maxBaseSalary | number | Maximum base salary |
minTotalSalary | number | Minimum total compensation |
maxTotalSalary | number | Maximum total compensation |
salaryCurrency | string | Currency code (e.g. USD) |
totalCompensationEstimates | array | Per-seniority-level total-comp estimates |
Company
| Field | Type | Description |
|---|---|---|
company | string | Company name |
companySlug | string | Company slug on Levels.fyi |
companyType | string | Company type (public, private, startup, etc.) |
companyEmployeeCount | string | Reported employee count or band |
companyEstimatedValuation | string | Estimated company valuation |
companyShortDescription | string | One-line company blurb |
companyIcon | string | Company logo/icon URL |
Dates, Links & Context
| Field | Type | Description |
|---|---|---|
postingDate | string | When the job was posted |
expiryDate | string | When the listing expires |
applicationUrl | string | External application link |
descriptionText | string | Plain-text job description (when enabled) |
descriptionHtml | string | Full HTML job description (when enabled) |
searchQuery | string | The keyword that produced this row |
searchLocation | string | The location used for the search |
scrapedAt | string | Extraction timestamp (ISO 8601) |
Tips for Best Results
- Run several related titles in one batch. Levels.fyi returns at most around 200 companies' worth of jobs for a single keyword, so one keyword tops out near a few hundred listings β queue "Software Engineer", "Backend Engineer", and "Full Stack Engineer" together to widen coverage well beyond that ceiling.
- Set a minimum total compensation to isolate senior roles. A
minTotalCompensationfloor (e.g. 300000) filters on the median total comp, surfacing staff and principal roles without scrolling past junior listings. - Pair a keyword with a location for sharper results β "Data Scientist" plus "New York" returns a tighter, more relevant set than either alone.
- Use Total Compensation sort when you want the highest-paying roles first and Date Posted sort when you only care about the freshest listings.
- Turn off full descriptions for lighter, faster pulls when you only need titles, companies, locations, and compensation β flip
includeDescriptionoff. - Add a seniority level filter to benchmark a single band cleanly; combine it with a discipline to compare, say, Senior Data Scientist pay across companies.
- Paste a tuned URL into
startUrlswhen you've already dialed in a search on the website β the scraper lifts the keyword and filters straight from the link.
Pricing
From $1 per 1,000 results β among the most affordable ways to collect Levels.fyi compensation and company data at scale. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.12 | $0.11 | $0.11 | $0.10 |
| 1,000 | $1.20 | $1.13 | $1.07 | $1.00 |
| 10,000 | $12.00 | $11.30 | $10.70 | $10.00 |
| 100,000 | $120.00 | $113.00 | $107.00 | $100.00 |
A "result" is one job listing pushed to your dataset. No compute or time-based charges β you pay per result, plus a small fixed per-run start fee.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps:
- Zapier / Make / n8n β Workflow automation
- Google Sheets β Direct spreadsheet export
- Slack / Email β Notifications on new results
- Webhooks β Trigger custom APIs on run completion
- Apify API β Full programmatic access
Legal & Ethical Use
This scraper collects publicly available job-listing and compensation data for legitimate research, recruiting, and analytics. You are responsible for using the data in compliance with Levels.fyi's terms of service and all applicable laws, including data protection regulations such as GDPR and CCPA. Do not use the data to harass individuals, and respect the rights of the data's original publishers. When in doubt, consult legal counsel about your specific use case.